package com.munichosica.myapp.controller.Almacen;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.munichosica.myapp.controller.Usuario.UsuariosController;
import com.munichosica.myapp.dto.Almacen;
import com.munichosica.myapp.dto.Usuario;
import com.munichosica.myapp.exceptions.AlmacenDaoException;
import com.munichosica.myapp.factory.AlmacenDaoFactory;

@Controller
@RequestMapping("/Almacen")
public class AlmacenController {
	//Para el Log4J
	Logger logger=Logger.getLogger(AlmacenController.class);
	
	@RequestMapping(value="Listar.htm", method=RequestMethod.POST)
	public @ResponseBody List<Almacen> listar(@RequestParam("criterio") String criterio,
			@RequestParam("texto") String texto, @RequestParam("estado") String estado){
		logger.info("Ingreso a Almacenes/Listar.htm");
		List<Almacen> list=null;
		try {
			list=AlmacenDaoFactory.create().listarPorCriterio(criterio, texto, estado);
		} catch (AlmacenDaoException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}
	
	@RequestMapping(value="Procesar.htm", method=RequestMethod.POST)
	public @ResponseBody String procesar(HttpServletRequest request,Almacen almacen){
		try {
			HttpSession session=request.getSession(true);
			Usuario usuario=(Usuario) session.getAttribute("USUARIO");
			if(almacen.getAlmcodigoI()==null||almacen.getAlmcodigoI()<1){
				almacen.setAlmusuarioregistraV(usuario.getUsuusuarioV());
				almacen.setAlmipV(request.getRemoteAddr());
				AlmacenDaoFactory.create().insertar(almacen);
			}else{
				almacen.setAlmusuarioactualizaV(usuario.getUsuusuarioV());
				almacen.setAlmipV(request.getRemoteAddr());
				AlmacenDaoFactory.create().modificar(almacen);
			}
		} catch (AlmacenDaoException e) {
			logger.error(e.getMessage(), e);
		}
		return String.valueOf(almacen.getAlmcodigoI());
	}
	
	@RequestMapping(value="Obtener.htm", method=RequestMethod.GET)
	public @ResponseBody Almacen obtener(@RequestParam("codigo") Integer codigo){
		try {
			return AlmacenDaoFactory.create().obtener(codigo);
		} catch (AlmacenDaoException e) {
			logger.error(e.getMessage(), e);
		}
		return null;
	}
	
	@RequestMapping(value="Eliminar.htm", method=RequestMethod.GET)
	public @ResponseBody String eliminar(HttpServletRequest request,@RequestParam("codigo") Integer codigo){
		try {
			HttpSession session=request.getSession(true);
			Usuario usuario=(Usuario) session.getAttribute("USUARIO");
			Almacen almacen=new Almacen();
			almacen.setAlmusuarioactualizaV(usuario.getUsuusuarioV());
			almacen.setAlmipV(request.getRemoteAddr());
			almacen.setAlmcodigoI(codigo);
			AlmacenDaoFactory.create().eliminar(almacen);
		} catch (AlmacenDaoException e) {
			logger.error(e.getMessage(), e);
		}
		return String.valueOf(codigo);
	}
}
